{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "e65b786f-8da2-46a7-b421-4265bcc43715"
   },
   "source": [
    "### 1、赛前准备"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "a73c2fa8-4465-4877-b570-59e8cc439847"
   },
   "source": [
    "#### 1.1 前言\n",
    "本次赛事由开源学习组织Datawhale主办，主要带领学习者利用Python进行数据分析以及数据可视化，包含数据集的处理、数据探索与清晰、数据分析、数据可视化四部分，利用pandas、matplotlib、wordcloud等第三方库带大家玩转数据分析～还有丰富礼品等你来领取哦～\n",
    "</br>学习赛事地址：https://tianchi.aliyun.com/competition/entrance/531837/introduction\n",
    "#### 1.2 数据集来源介绍\n",
    "**所有候选人信息** \n",
    "</br>该文件为每个候选人提供一份记录，并显示候选人的信息、总收入、从授权委员会收到的转账、付款总额、给授权委员会的转账、库存现金总额、贷款和债务以及其他财务汇总信息。\n",
    "</br>数据字段描述详细:https://www.fec.gov/campaign-finance-data/all-candidates-file-description/\n",
    "</br>关键字段说明\n",
    "- CAND_ID 候选人ID\n",
    "- CAND_NAME 候选人姓名\n",
    "- CAND_PTY_AFFILIATION 候选人党派\n",
    "\n",
    "</br>数据来源:https://www.fec.gov/files/bulk-downloads/2020/weball20.zip\n",
    "\n",
    "**候选人委员会链接信息** \n",
    "</br>该文件显示候选人的身份证号码、候选人的选举年份、联邦选举委员会选举年份、委员会识别号、委员会类型、委员会名称和链接标识号。\n",
    "</br>信息描述详细:https://www.fec.gov/campaign-finance-data/candidate-committee-linkage-file-description/\n",
    "</br>关键字段说明\n",
    "- CAND_ID 候选人ID\n",
    "- CAND_ELECTION_YR 候选人选举年份\n",
    "- CMTE_ID 委员会ID\n",
    "\n",
    "</br>数据来源:https://www.fec.gov/files/bulk-downloads/2020/ccl20.zip\n",
    "\n",
    "**个人捐款档案信息** \n",
    "【注意】由于文件较大，本数据集只包含2020.7.22-2020.8.20的相关数据，如果需要更全数据可以通过数据来源中的地址下载。\n",
    "</br>该文件包含有关收到捐款的委员会、披露捐款的报告、提供捐款的个人、捐款日期、金额和有关捐款的其他信息。\n",
    "</br>信息描述详细:[https://www.fec.gov/campaign-finance-data/contributions-individuals-file-description/](https://www.fec.gov/campaign-finance-data/contributions-individuals-file-description/)\n",
    "</br>关键字段说明\n",
    "- CMTE_ID  委员会ID\n",
    "- NAME 捐款人姓名\n",
    "- CITY 捐款人所在市\n",
    "- State 捐款人所在州\n",
    "- EMPLOYER 捐款人雇主/公司\n",
    "- OCCUPATION 捐款人职业\n",
    "\n",
    "</br>数据来源:https://www.fec.gov/files/bulk-downloads/2020/indiv20.zip\n",
    "\n",
    "#### 1.3 需要提前安装的包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n",
      "Requirement already satisfied: wordcloud in /data/nas/workspace/envs/python3.6/site-packages (1.8.1)\n",
      "Requirement already satisfied: numpy>=1.6.1 in /opt/conda/lib/python3.6/site-packages (from wordcloud) (1.19.4)\n",
      "Requirement already satisfied: pillow in /opt/conda/lib/python3.6/site-packages (from wordcloud) (8.0.1)\n",
      "Requirement already satisfied: matplotlib in /opt/conda/lib/python3.6/site-packages (from wordcloud) (3.3.3)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.6/site-packages (from matplotlib->wordcloud) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.6/site-packages (from matplotlib->wordcloud) (0.10.0)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /opt/conda/lib/python3.6/site-packages (from matplotlib->wordcloud) (2.4.7)\n",
      "Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.6/site-packages (from matplotlib->wordcloud) (2.8.1)\n",
      "Requirement already satisfied: six in /opt/conda/lib/python3.6/site-packages (from cycler>=0.10->matplotlib->wordcloud) (1.15.0)\n",
      "\u001b[33mWARNING: You are using pip version 21.0.1; however, version 21.2.4 is available.\n",
      "You should consider upgrading via the '/opt/conda/bin/python -m pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "# 安装词云处理包wordcloud\n",
    "!pip install wordcloud --user"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "55327b96-9727-4e64-871d-82f29778504f"
   },
   "source": [
    "#### 1.4 需要提前下载好数据集\n",
    "【注意】如果你只是在天池技术圈看到本文，你需要先查看[赛事指南](https://tianchi.aliyun.com/competition/entrance/531837/tab/227)。\n",
    "</br>通过[赛事指南](https://tianchi.aliyun.com/competition/entrance/531837/tab/227)提示操作你可以成功`Fork`赛事论坛的baseline到你的天池实验室，并点击`编辑`按钮成功跳转到了DSW在线编程。\n",
    "</br>在进行数据处理前，你需要点击DSW左侧`天池`tab，下载本案例数据集`2020_US_President_political_contributions`，后续步骤才能正确执行。\n",
    "</br>\n",
    "![](https://img.alicdn.com/tfs/TB1lceDl5pE_u4jSZKbXXbCUVXa-969-466.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2、数据处理\n",
    "进行数据处理前，我们需要知道我们最终想要的数据是什么样的，因为我们是想分析候选人与捐赠人之间的关系，所以我们想要一张数据表中有捐赠人与候选人一一对应的关系，所以需要将目前的三张数据表进行一一关联，汇总到需要的数据。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "e13f9451-de51-4eed-ad7f-b5f4e5477270"
   },
   "source": [
    "#### 2.1 将委员会和候选人一一对应，通过`CAND_ID`关联两个表\n",
    "由于候选人和委员会的联系表中无候选人姓名，只有候选人ID（`CAND_ID`），所以需要通过`CAND_ID`从候选人表中获取到候选人姓名，最终得到候选人与委员会联系表`ccl`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "uuid": "2d7aa464-c03b-4804-979c-755a682fe034"
   },
   "outputs": [],
   "source": [
    "# 导入相关处理包\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "uuid": "68eb1ac7-d77d-4de4-8e65-431df8edb356"
   },
   "outputs": [],
   "source": [
    "# 读取候选人信息，由于原始数据没有表头，需要添加表头\n",
    "candidates = pd.read_table(\"weball20.txt\", sep = '|',names=['CAND_ID','CAND_NAME','CAND_ICI','PTY_CD','CAND_PTY_AFFILIATION','TTL_RECEIPTS',\n",
    "                                                          'TRANS_FROM_AUTH','TTL_DISB','TRANS_TO_AUTH','COH_BOP','COH_COP','CAND_CONTRIB',\n",
    "                                                          'CAND_LOANS','OTHER_LOANS','CAND_LOAN_REPAY','OTHER_LOAN_REPAY','DEBTS_OWED_BY',\n",
    "                                                          'TTL_INDIV_CONTRIB','CAND_OFFICE_ST','CAND_OFFICE_DISTRICT','SPEC_ELECTION','PRIM_ELECTION','RUN_ELECTION'\n",
    "                                                          ,'GEN_ELECTION','GEN_ELECTION_PRECENT','OTHER_POL_CMTE_CONTRIB','POL_PTY_CONTRIB',\n",
    "                                                          'CVG_END_DT','INDIV_REFUNDS','CMTE_REFUNDS'])\n",
    "# 读取候选人和委员会的联系信息\n",
    "ccl = pd.read_table(\"ccl.txt\", sep = '|',names=['CAND_ID','CAND_ELECTION_YR','FEC_ELECTION_YR','CMTE_ID','CMTE_TP','CMTE_DSGN','LINKAGE_ID'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "uuid": "e56e671d-bd19-4785-95da-78a07096c4fa"
   },
   "outputs": [],
   "source": [
    "# 关联两个表数据\n",
    "ccl = pd.merge(ccl,candidates)\n",
    "# 提取出所需要的列\n",
    "ccl = pd.DataFrame(ccl, columns=[ 'CMTE_ID','CAND_ID', 'CAND_NAME','CAND_PTY_AFFILIATION'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "e0759da0-7584-4a96-ab96-1c089bce2bfd"
   },
   "source": [
    "数据字段说明：\n",
    "- CMTE_ID：委员会ID\n",
    "- CAND_ID：候选人ID\n",
    "- CAND_NAME：候选人姓名\n",
    "- CAND_PTY_AFFILIATION：候选人党派"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "uuid": "e79868f7-7905-4571-a25c-803f1d8ddf97"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CMTE_ID</th>\n",
       "      <th>CAND_ID</th>\n",
       "      <th>CAND_NAME</th>\n",
       "      <th>CAND_PTY_AFFILIATION</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C00697789</td>\n",
       "      <td>H0AL01055</td>\n",
       "      <td>CARL, JERRY LEE, JR</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C00701557</td>\n",
       "      <td>H0AL01063</td>\n",
       "      <td>LAMBERT, DOUGLAS WESTLEY III</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>C00701409</td>\n",
       "      <td>H0AL01071</td>\n",
       "      <td>PRINGLE, CHRISTOPHER PAUL</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>C00703066</td>\n",
       "      <td>H0AL01089</td>\n",
       "      <td>HIGHTOWER, BILL</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>C00708867</td>\n",
       "      <td>H0AL01097</td>\n",
       "      <td>AVERHART, JAMES</td>\n",
       "      <td>DEM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>C00710947</td>\n",
       "      <td>H0AL01105</td>\n",
       "      <td>GARDNER, KIANI A</td>\n",
       "      <td>DEM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>C00722512</td>\n",
       "      <td>H0AL01121</td>\n",
       "      <td>CASTORANI, JOHN</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>C00725069</td>\n",
       "      <td>H0AL01139</td>\n",
       "      <td>COLLINS, FREDERICK G. RICK'</td>\n",
       "      <td>DEM</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>C00462143</td>\n",
       "      <td>H0AL02087</td>\n",
       "      <td>ROBY, MARTHA</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>C00493783</td>\n",
       "      <td>H0AL02087</td>\n",
       "      <td>ROBY, MARTHA</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     CMTE_ID    CAND_ID                     CAND_NAME CAND_PTY_AFFILIATION\n",
       "0  C00697789  H0AL01055           CARL, JERRY LEE, JR                  REP\n",
       "1  C00701557  H0AL01063  LAMBERT, DOUGLAS WESTLEY III                  REP\n",
       "2  C00701409  H0AL01071     PRINGLE, CHRISTOPHER PAUL                  REP\n",
       "3  C00703066  H0AL01089               HIGHTOWER, BILL                  REP\n",
       "4  C00708867  H0AL01097               AVERHART, JAMES                  DEM\n",
       "5  C00710947  H0AL01105              GARDNER, KIANI A                  DEM\n",
       "6  C00722512  H0AL01121               CASTORANI, JOHN                  REP\n",
       "7  C00725069  H0AL01139   COLLINS, FREDERICK G. RICK'                  DEM\n",
       "8  C00462143  H0AL02087                  ROBY, MARTHA                  REP\n",
       "9  C00493783  H0AL02087                  ROBY, MARTHA                  REP"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看目前ccl数据前10行\n",
    "ccl.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "a7ce0ac0-7b6d-48dc-9a5d-de5f37e4427f"
   },
   "source": [
    "#### 2.2 将候选人和捐赠人一一对应，通过`CMTE_ID`关联两个表\n",
    "通过`CMTE_ID`将目前处理好的候选人和委员会关系表与人捐款档案表进行关联，得到候选人与捐赠人一一对应联系表`cil`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "uuid": "078d4a62-f8f5-4578-973f-36e582767280"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3249: DtypeWarning: Columns (10,15,16,18) have mixed types.Specify dtype option on import or set low_memory=False.\n",
      "  if (await self.run_code(code, result,  async_=asy)):\n"
     ]
    }
   ],
   "source": [
    "# 读取个人捐赠数据，由于原始数据没有表头，需要添加表头\n",
    "# 提示：读取本文件大概需要5-10s\n",
    "itcont = pd.read_table('itcont_2020_20200722_20200820.txt', sep='|',names=['CMTE_ID','AMNDT_IND','RPT_TP','TRANSACTION_PGI',\n",
    "                                                                                  'IMAGE_NUM','TRANSACTION_TP','ENTITY_TP','NAME','CITY',\n",
    "                                                                                  'STATE','ZIP_CODE','EMPLOYER','OCCUPATION','TRANSACTION_DT',\n",
    "                                                                                  'TRANSACTION_AMT','OTHER_ID','TRAN_ID','FILE_NUM','MEMO_CD',\n",
    "                                                                                  'MEMO_TEXT','SUB_ID'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "uuid": "174af85b-f173-407c-a4b3-abf3c7837164"
   },
   "outputs": [],
   "source": [
    "# 将候选人与委员会关系表ccl和个人捐赠数据表itcont合并，通过 CMTE_ID\n",
    "c_itcont =  pd.merge(ccl,itcont)\n",
    "# 提取需要的数据列\n",
    "c_itcont = pd.DataFrame(c_itcont, columns=[ 'CAND_NAME','NAME', 'STATE','EMPLOYER','OCCUPATION',\n",
    "                                           'TRANSACTION_AMT', 'TRANSACTION_DT','CAND_PTY_AFFILIATION'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "e2f08a99-e2ad-4515-8749-f6815e29b477"
   },
   "source": [
    "**数据说明**\n",
    "- CAND_NAME – 接受捐赠的候选人姓名\n",
    "- NAME – 捐赠人姓名\n",
    "- STATE – 捐赠人所在州\n",
    "- EMPLOYER – 捐赠人所在公司\n",
    "- OCCUPATION – 捐赠人职业\n",
    "- TRANSACTION_AMT – 捐赠数额（美元）\n",
    "- TRANSACTION_DT – 收到捐款的日期\n",
    "- CAND_PTY_AFFILIATION – 候选人党派"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "uuid": "2d8759ba-7a37-44cf-bd8e-24f2cabb8e3d"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CAND_NAME</th>\n",
       "      <th>NAME</th>\n",
       "      <th>STATE</th>\n",
       "      <th>EMPLOYER</th>\n",
       "      <th>OCCUPATION</th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "      <th>TRANSACTION_DT</th>\n",
       "      <th>CAND_PTY_AFFILIATION</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>MARTIN, WILLIAM II</td>\n",
       "      <td>AZ</td>\n",
       "      <td>RETIRED</td>\n",
       "      <td>RETIRED</td>\n",
       "      <td>100</td>\n",
       "      <td>7242020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>RODRIGUEZ, GERARDO</td>\n",
       "      <td>AZ</td>\n",
       "      <td>VA HOSPITAL</td>\n",
       "      <td>LAB TECH</td>\n",
       "      <td>40</td>\n",
       "      <td>7242020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>RODRIGUEZ, GERARDO</td>\n",
       "      <td>AZ</td>\n",
       "      <td>VA HOSPITAL</td>\n",
       "      <td>LAB TECH</td>\n",
       "      <td>40</td>\n",
       "      <td>7312020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>HOPKINS, RICHARD</td>\n",
       "      <td>AZ</td>\n",
       "      <td>POWERS-LEAVITT</td>\n",
       "      <td>INSURANCE AGENT</td>\n",
       "      <td>300</td>\n",
       "      <td>8102020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>PENDLETON, DIANE</td>\n",
       "      <td>AZ</td>\n",
       "      <td>UNEMPLOYED</td>\n",
       "      <td>NaN</td>\n",
       "      <td>500</td>\n",
       "      <td>8072020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>PREVATT, WILLIAM</td>\n",
       "      <td>AZ</td>\n",
       "      <td>SELF-EMPLOYED</td>\n",
       "      <td>DVM</td>\n",
       "      <td>500</td>\n",
       "      <td>7312020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>HARDING, DOUG</td>\n",
       "      <td>AZ</td>\n",
       "      <td>MICROSURE</td>\n",
       "      <td>OPERATIONS MANAGER</td>\n",
       "      <td>2800</td>\n",
       "      <td>8102020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>HARDING, MARI</td>\n",
       "      <td>AZ</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1400</td>\n",
       "      <td>8152020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>WOOD, DANIEL</td>\n",
       "      <td>HEDGER, CYNTHIA</td>\n",
       "      <td>TX</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>200</td>\n",
       "      <td>7312020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>HUANG, PEGGY</td>\n",
       "      <td>HUANG - PERSONAL FUNDS, PEGGY</td>\n",
       "      <td>CA</td>\n",
       "      <td>OFFICE OF THE ATTORNEY GENERAL</td>\n",
       "      <td>DEPUTY ATTORNEY GENERAL</td>\n",
       "      <td>2600</td>\n",
       "      <td>7252020</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              CAND_NAME                           NAME STATE  \\\n",
       "0  MORGAN, JOSEPH DAVID             MARTIN, WILLIAM II    AZ   \n",
       "1  MORGAN, JOSEPH DAVID             RODRIGUEZ, GERARDO    AZ   \n",
       "2  MORGAN, JOSEPH DAVID             RODRIGUEZ, GERARDO    AZ   \n",
       "3          WOOD, DANIEL               HOPKINS, RICHARD    AZ   \n",
       "4          WOOD, DANIEL               PENDLETON, DIANE    AZ   \n",
       "5          WOOD, DANIEL               PREVATT, WILLIAM    AZ   \n",
       "6          WOOD, DANIEL                  HARDING, DOUG    AZ   \n",
       "7          WOOD, DANIEL                  HARDING, MARI    AZ   \n",
       "8          WOOD, DANIEL                HEDGER, CYNTHIA    TX   \n",
       "9          HUANG, PEGGY  HUANG - PERSONAL FUNDS, PEGGY    CA   \n",
       "\n",
       "                         EMPLOYER               OCCUPATION  TRANSACTION_AMT  \\\n",
       "0                         RETIRED                  RETIRED              100   \n",
       "1                     VA HOSPITAL                 LAB TECH               40   \n",
       "2                     VA HOSPITAL                 LAB TECH               40   \n",
       "3                  POWERS-LEAVITT          INSURANCE AGENT              300   \n",
       "4                      UNEMPLOYED                      NaN              500   \n",
       "5                   SELF-EMPLOYED                      DVM              500   \n",
       "6                       MICROSURE       OPERATIONS MANAGER             2800   \n",
       "7                             NaN                      NaN             1400   \n",
       "8                             NaN                      NaN              200   \n",
       "9  OFFICE OF THE ATTORNEY GENERAL  DEPUTY ATTORNEY GENERAL             2600   \n",
       "\n",
       "   TRANSACTION_DT CAND_PTY_AFFILIATION  \n",
       "0         7242020                  REP  \n",
       "1         7242020                  REP  \n",
       "2         7312020                  REP  \n",
       "3         8102020                  REP  \n",
       "4         8072020                  REP  \n",
       "5         7312020                  REP  \n",
       "6         8102020                  REP  \n",
       "7         8152020                  REP  \n",
       "8         7312020                  REP  \n",
       "9         7252020                  REP  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看目前数据前10行\n",
    "c_itcont.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "ddc64575-baf8-4d6f-aff1-ac46e05563d1"
   },
   "source": [
    "### 3、数据探索与清洗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "050f57a5-f565-41ec-bb8f-9acc064c0f29"
   },
   "source": [
    "进过数据处理部分，我们获得了可用的数据集，现在我们可以利用调用`shape`属性查看数据的规模，调用`info`函数查看数据信息，调用`describe`函数查看数据分布。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "uuid": "f41d355d-b606-491d-b3f2-9a06cbc3b481"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(756205, 8)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据规模 多少行 多少列\n",
    "c_itcont.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "uuid": "b6c148a8-b8b8-4959-acac-b1e48548c1a0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 756205 entries, 0 to 756204\n",
      "Data columns (total 8 columns):\n",
      " #   Column                Non-Null Count   Dtype \n",
      "---  ------                --------------   ----- \n",
      " 0   CAND_NAME             756205 non-null  object\n",
      " 1   NAME                  756205 non-null  object\n",
      " 2   STATE                 756160 non-null  object\n",
      " 3   EMPLOYER              737413 non-null  object\n",
      " 4   OCCUPATION            741294 non-null  object\n",
      " 5   TRANSACTION_AMT       756205 non-null  int64 \n",
      " 6   TRANSACTION_DT        756205 non-null  int64 \n",
      " 7   CAND_PTY_AFFILIATION  756205 non-null  object\n",
      "dtypes: int64(2), object(6)\n",
      "memory usage: 51.9+ MB\n"
     ]
    }
   ],
   "source": [
    "# 查看整体数据信息，包括每个字段的名称、非空数量、字段的数据类型\n",
    "c_itcont.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过上面的探索我们知道目前数据集的一些基本情况，目前数据总共有756205行，8列，总占用内存51.9+MB，`STATE`、`EMPLOYER`、`OCCUPATION`有缺失值，另外日期列目前为int64类型，需要进行转换为str类型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#空值处理，统一填充 NOT PROVIDED\n",
    "c_itcont['STATE'].fillna('NOT PROVIDED',inplace=True)\n",
    "c_itcont['EMPLOYER'].fillna('NOT PROVIDED',inplace=True)\n",
    "c_itcont['OCCUPATION'].fillna('NOT PROVIDED',inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 对日期TRANSACTION_DT列进行处理\n",
    "c_itcont['TRANSACTION_DT'] = c_itcont['TRANSACTION_DT'] .astype(str)\n",
    "# 将日期格式改为年月日  7242020\t2020724\n",
    "c_itcont['TRANSACTION_DT'] = [i[3:7]+i[0]+i[1:3] for i in c_itcont['TRANSACTION_DT'] ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 756205 entries, 0 to 756204\n",
      "Data columns (total 8 columns):\n",
      " #   Column                Non-Null Count   Dtype \n",
      "---  ------                --------------   ----- \n",
      " 0   CAND_NAME             756205 non-null  object\n",
      " 1   NAME                  756205 non-null  object\n",
      " 2   STATE                 756205 non-null  object\n",
      " 3   EMPLOYER              756205 non-null  object\n",
      " 4   OCCUPATION            756205 non-null  object\n",
      " 5   TRANSACTION_AMT       756205 non-null  int64 \n",
      " 6   TRANSACTION_DT        756205 non-null  object\n",
      " 7   CAND_PTY_AFFILIATION  756205 non-null  object\n",
      "dtypes: int64(1), object(7)\n",
      "memory usage: 51.9+ MB\n"
     ]
    }
   ],
   "source": [
    "# 再次查看数据信息\n",
    "c_itcont.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CAND_NAME</th>\n",
       "      <th>NAME</th>\n",
       "      <th>STATE</th>\n",
       "      <th>EMPLOYER</th>\n",
       "      <th>OCCUPATION</th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "      <th>TRANSACTION_DT</th>\n",
       "      <th>CAND_PTY_AFFILIATION</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>MARTIN, WILLIAM II</td>\n",
       "      <td>AZ</td>\n",
       "      <td>RETIRED</td>\n",
       "      <td>RETIRED</td>\n",
       "      <td>100</td>\n",
       "      <td>2020724</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>RODRIGUEZ, GERARDO</td>\n",
       "      <td>AZ</td>\n",
       "      <td>VA HOSPITAL</td>\n",
       "      <td>LAB TECH</td>\n",
       "      <td>40</td>\n",
       "      <td>2020724</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MORGAN, JOSEPH DAVID</td>\n",
       "      <td>RODRIGUEZ, GERARDO</td>\n",
       "      <td>AZ</td>\n",
       "      <td>VA HOSPITAL</td>\n",
       "      <td>LAB TECH</td>\n",
       "      <td>40</td>\n",
       "      <td>2020731</td>\n",
       "      <td>REP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              CAND_NAME                NAME STATE     EMPLOYER OCCUPATION  \\\n",
       "0  MORGAN, JOSEPH DAVID  MARTIN, WILLIAM II    AZ      RETIRED    RETIRED   \n",
       "1  MORGAN, JOSEPH DAVID  RODRIGUEZ, GERARDO    AZ  VA HOSPITAL   LAB TECH   \n",
       "2  MORGAN, JOSEPH DAVID  RODRIGUEZ, GERARDO    AZ  VA HOSPITAL   LAB TECH   \n",
       "\n",
       "   TRANSACTION_AMT TRANSACTION_DT CAND_PTY_AFFILIATION  \n",
       "0              100        2020724                  REP  \n",
       "1               40        2020724                  REP  \n",
       "2               40        2020731                  REP  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据前3行\n",
    "c_itcont.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "uuid": "240579c3-f6ef-4c10-a7c6-df3e55f163b1"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7.562050e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.504307e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.320452e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-5.600000e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.500000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.500000e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       TRANSACTION_AMT\n",
       "count     7.562050e+05\n",
       "mean      1.504307e+02\n",
       "std       2.320452e+03\n",
       "min      -5.600000e+03\n",
       "25%       2.000000e+01\n",
       "50%       3.500000e+01\n",
       "75%       1.000000e+02\n",
       "max       1.500000e+06"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据表中数据类型的列的数据分布情况\n",
    "c_itcont.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "uuid": "18fa8a40-3913-468e-9895-52928f177acc"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count                 756205\n",
       "unique                   312\n",
       "top       BIDEN, JOSEPH R JR\n",
       "freq                  507816\n",
       "Name: CAND_NAME, dtype: object"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看单列的数据发布情况\n",
    "c_itcont['CAND_NAME'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "76b08b3f-2242-4f7d-82d6-23e272a249fa"
   },
   "source": [
    "### 4、数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CAND_PTY_AFFILIATION</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>DEM</th>\n",
       "      <td>75961730</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REP</th>\n",
       "      <td>37170653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IND</th>\n",
       "      <td>328802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LIB</th>\n",
       "      <td>169202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DFL</th>\n",
       "      <td>76825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GRE</th>\n",
       "      <td>18607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NON</th>\n",
       "      <td>11256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>UNK</th>\n",
       "      <td>10195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CON</th>\n",
       "      <td>4117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BDY</th>\n",
       "      <td>3250</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      TRANSACTION_AMT\n",
       "CAND_PTY_AFFILIATION                 \n",
       "DEM                          75961730\n",
       "REP                          37170653\n",
       "IND                            328802\n",
       "LIB                            169202\n",
       "DFL                             76825\n",
       "GRE                             18607\n",
       "NON                             11256\n",
       "UNK                             10195\n",
       "CON                              4117\n",
       "BDY                              3250"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算每个党派的所获得的捐款总额，然后排序，取前十位\n",
    "c_itcont.groupby(\"CAND_PTY_AFFILIATION\").sum().sort_values(\"TRANSACTION_AMT\",ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "uuid": "e3794468-f116-4afe-acda-47b02b29c02e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CAND_NAME</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>BIDEN, JOSEPH R JR</th>\n",
       "      <td>68111142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TRUMP, DONALD J.</th>\n",
       "      <td>16594982</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SULLIVAN, DAN</th>\n",
       "      <td>9912465</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>JACOBS, CHRISTOPHER L.</th>\n",
       "      <td>6939209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BLOOMBERG, MICHAEL R.</th>\n",
       "      <td>3451916</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MARKEY, EDWARD J. SEN.</th>\n",
       "      <td>606832</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHAHEEN, JEANNE</th>\n",
       "      <td>505446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>KENNEDY, JOSEPH P III</th>\n",
       "      <td>467738</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CORNYN, JOHN SEN</th>\n",
       "      <td>345959</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FIGLESTHALER, WILLIAM MATTHEW MD</th>\n",
       "      <td>258221</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  TRANSACTION_AMT\n",
       "CAND_NAME                                        \n",
       "BIDEN, JOSEPH R JR                       68111142\n",
       "TRUMP, DONALD J.                         16594982\n",
       "SULLIVAN, DAN                             9912465\n",
       "JACOBS, CHRISTOPHER L.                    6939209\n",
       "BLOOMBERG, MICHAEL R.                     3451916\n",
       "MARKEY, EDWARD J. SEN.                     606832\n",
       "SHAHEEN, JEANNE                            505446\n",
       "KENNEDY, JOSEPH P III                      467738\n",
       "CORNYN, JOHN SEN                           345959\n",
       "FIGLESTHALER, WILLIAM MATTHEW MD           258221"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算每个总统候选人所获得的捐款总额，然后排序，取前十位\n",
    "c_itcont.groupby(\"CAND_NAME\").sum().sort_values(\"TRANSACTION_AMT\",ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "获得捐赠最多的党派有`DEM(民主党)`、`REP(共和党)`，分别对应`BIDEN, JOSEPH R JR(拜登)`和`TRUMP, DONALD J.(特朗普)`，从我们目前分析的2020.7.22-2020.8.20这一个月的数据来看，在选民的捐赠数据中拜登代表的民主党完胜特朗普代表的共和党，由于完整数据量过大，所以没有对所有数据进行汇总分析，因此也不能确定11月大选公布结果就一定是拜登当选"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "uuid": "0c65c86b-fc39-40d9-8706-2ae752480b2f"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OCCUPATION</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>NOT EMPLOYED</th>\n",
       "      <td>24436214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RETIRED</th>\n",
       "      <td>18669950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NOT PROVIDED</th>\n",
       "      <td>5089355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ATTORNEY</th>\n",
       "      <td>4443569</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FOUNDER</th>\n",
       "      <td>3519109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PHYSICIAN</th>\n",
       "      <td>3295595</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CONSULTANT</th>\n",
       "      <td>1647033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LAWYER</th>\n",
       "      <td>1565976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PROFESSOR</th>\n",
       "      <td>1481260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EXECUTIVE</th>\n",
       "      <td>1467865</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              TRANSACTION_AMT\n",
       "OCCUPATION                   \n",
       "NOT EMPLOYED         24436214\n",
       "RETIRED              18669950\n",
       "NOT PROVIDED          5089355\n",
       "ATTORNEY              4443569\n",
       "FOUNDER               3519109\n",
       "PHYSICIAN             3295595\n",
       "CONSULTANT            1647033\n",
       "LAWYER                1565976\n",
       "PROFESSOR             1481260\n",
       "EXECUTIVE             1467865"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看不同职业的人捐款的总额，然后排序，取前十位\n",
    "c_itcont.groupby('OCCUPATION').sum().sort_values(\"TRANSACTION_AMT\",ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NOT EMPLOYED    224109\n",
       "RETIRED         151834\n",
       "ATTORNEY         19666\n",
       "NOT PROVIDED     14912\n",
       "PHYSICIAN        14033\n",
       "CONSULTANT        8333\n",
       "PROFESSOR         8022\n",
       "TEACHER           8013\n",
       "ENGINEER          7922\n",
       "SALES             6435\n",
       "Name: OCCUPATION, dtype: int64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看每个职业捐款人的数量\n",
    "c_itcont['OCCUPATION'].value_counts().head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从捐款人的职业这个角度分析，我们会发现`NOT EMPLOYED(自由职业)`的总捐赠额是最多，通过查看每个职业捐赠的人数来看，我们就会发现是因为`NOT EMPLOYED(自由职业)`人数多的原因，另外退休人员捐款人数也特别多，所以捐款总数对应的也多，其他比如像：律师、创始人、医生、顾问、教授、主管这些高薪人才虽然捐款总人数少，但是捐款总金额也占据了很大比例。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "uuid": "de63d40a-37dd-4158-9e51-1b99de6c5173"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_AMT</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>STATE</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>CA</th>\n",
       "      <td>19999115</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NY</th>\n",
       "      <td>11468537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FL</th>\n",
       "      <td>8128789</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TX</th>\n",
       "      <td>8101871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MA</th>\n",
       "      <td>5187957</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       TRANSACTION_AMT\n",
       "STATE                 \n",
       "CA            19999115\n",
       "NY            11468537\n",
       "FL             8128789\n",
       "TX             8101871\n",
       "MA             5187957"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 每个州获捐款的总额，然后排序，取前五位\n",
    "c_itcont.groupby('STATE').sum().sort_values(\"TRANSACTION_AMT\",ascending=False).head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CA    127895\n",
       "TX     54457\n",
       "FL     54343\n",
       "NY     49453\n",
       "MA     29314\n",
       "Name: STATE, dtype: int64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看每个州捐款人的数量\n",
    "c_itcont['STATE'].value_counts().head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "5a32e549-cc71-4456-8ba2-070af8c300e1"
   },
   "source": [
    "最后查看每个州的捐款总金额，我们会发现`CA(加利福利亚)`、`NY(纽约)`、`FL(弗罗里达)`这几个州的捐款是最多的，在捐款人数上也是在Top端，另一方面也凸显出这些州的经济水平发达。\n",
    "大家也可以通过数据查看下上面列举的高端职业在各州的分布情况，进行进一步的分析探索。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "ae500230-23dd-4749-9e48-9f52708a4779"
   },
   "source": [
    "### 4、数据可视化\n",
    "首先导入相关Python库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "uuid": "c7c4b8e3-7b4c-4419-9f87-1185258b37c5"
   },
   "outputs": [],
   "source": [
    "# 导入matplotlib中的pyplot\n",
    "import matplotlib.pyplot as plt\n",
    "# 为了使matplotlib图形能够内联显示\n",
    "%matplotlib inline\n",
    "# 导入词云库\n",
    "from wordcloud import WordCloud,ImageColorGenerator"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "9ec2ef3e-e21f-481c-b349-2628b00510e5"
   },
   "source": [
    "#### 4.1 按州总捐款数和总捐款人数柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "uuid": "ac7373c1-d015-442d-b673-53376f5a735c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='STATE'>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEYCAYAAABSnD3BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfs0lEQVR4nO3de5iVdb338fdHQvGUHGZCEoahohRSUedBLU2TVCyTeGrrYI9btweyZBvp3ikP11a3dm1UIsvClJJLsxoQ3So+akaiqaltQEeOHpBGGQ6pYCEeMOD7/HHfMy6GOaxh1qxZ3Hxe17Uu1v27T9858Fm/+a3fum9FBGZmll27dXUBZmbWuRz0ZmYZ56A3M8s4B72ZWcY56M3MMs5Bb2aWcSUb9JKmS3pd0uI8tr1BUm36eEnS34pQopnZTkGlOo9e0heAjcCvIuKz7djvX4HDIuLcTivOzGwnUrI9+oh4HFif2ybpk5J+J2mBpCckHdjMrmOAmqIUaWa2E/hIVxfQTtOACyPiZUlHAjcBJzSslDQQGATM7aL6zMxKzk4T9JL2AT4HzJLU0LxHk82qgbsiYksxazMzK2U7TdCTDDP9LSKGtbJNNXBRccoxM9s5lOwYfVMRsQH4i6R/AlDi0Ib16Xh9L+DpLirRzKwklWzQS6ohCe3PSKqXdB7wTeA8Sc8DS4BRObtUAzOiVKcRmZl1kZKdXmlmZoVRsj16MzMrDAe9mVnGleSsm7KysqisrOzqMszMdhoLFix4MyLKm1tXkkFfWVnJ/Pnzu7oMM7OdhqRXW1rnoRszs4xz0JuZZZyD3sws40pyjN7MPvSPf/yD+vp63n///a4uxUpAjx496N+/P927d897Hwe9WYmrr69n3333pbKykpwL+tkuKCJYt24d9fX1DBo0KO/92hy6kTRA0qOSlkpaIum7zWwjSTdKWi5poaTDc9adLenl9HF23pWZGQDvv/8+ffr0ccgbkujTp0+7/7rLp0e/Gbg0Ip6VtC+wQNKciFias80pwOD0cSTwc+BISb2BK4EqINJ9Z0fEW+2q0mwX55C3Bjvyu9Bmjz4i1kTEs+nzt4FlwAFNNhtFcsu/iIhngJ6S+gEnA3MiYn0a7nOAke2u0szMdli7xuglVQKHAX9usuoAYGXOcn3a1lJ7c8ceC4wFqKioaLWOyssfaEfVzau79isdPoZZVyjE73+utv4vrFu3jhEjRgCwdu1aunXrRnl58gHM559/nkMPPZTNmzczaNAg7rjjDnr27Nm477BhwzjwwAOZMWNGY9s555zDnDlzWLFiBXvssQdvvvkmVVVV1NXVsXXrVsaPH8/cuXORRI8ePbjzzjsbx6PffPNN+vXrx09/+lMuvPDCxmOuXbuW8ePHM2/ePHr27Enfvn2ZNGkSZ5+djBa/9tpr7Lfffuy3336UlZXxy1/+klNPPZXFixcD8OSTT3LJJZewYcMGAC655BLGjh0LwFVXXcX1119PXV0dH/vYxwDYZ5992LhxY6vft3vvvZfRo0ezbNkyDjwwuetpXV0dgwYNYuLEifzgBz/Y5mv61re+Rb9+/Zg1axYAixYt4uCDDwbg3HPP5eKLL271fK3Je3pleoenu4Hx6bXhCyoipkVEVURUNfwSmVnX69OnD7W1tdTW1nLhhRfyve99r3F57733pra2lsWLF9O7d2+mTp3auN+yZcvYsmULTzzxBO+88842x+zWrRvTp0/f7lwzZ85k9erVLFy4kEWLFnHPPfds88Ixa9YsjjrqKGpqPrwtdEQwevRojj/+eF555RUWLFjApEmT2LBhQ2Odp512GpMnT6a2tpY//OEP25xz7dq1nHnmmdx888288MILPPnkk9xyyy088MCHL6hlZWVMmTKlXd+3mpoajjnmmG1qBRg0aNA2x541axZDhw4FYOLEiY0177nnno3POxLykGfQS+pOEvK/iYj/bmaTVcCAnOX+aVtL7WaWMUcffTSrVn3437umpoazzjqLk046ifvuu2+bbcePH88NN9zA5s2bt2lfs2YN/fr1Y7fdkmjq378/vXr12uaYU6ZMYdWqVdTX1wPw6KOP0r179216+IceeijHHntsXnVPnTqVc845h8MPT+aQlJWVcf3113Pttdc2bnPuuecyc+ZM1q9fn9cxN27cyJNPPsmtt966zV8zAHvttRcHHXRQ42VeZs6cyemnn57XcXdUPrNuBNwKLIuIH7Ww2Wzgn9PZN0cBf4+INcDDwEmSeknqBZyUtplZhmzZsoVHHnmE0047rbFt5syZVFdXM2bMmO16tRUVFRxzzDHccccd27Sffvrp3H///QwbNoxLL72U5557rnHdypUrWbNmDcOHD+f0009n5syZACxevJgjjjhih2tfsmTJdvtXVVWx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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各州总捐款数可视化\n",
    "st_amt = c_itcont.groupby('STATE').sum().sort_values(\"TRANSACTION_AMT\",ascending=False)[:10]\n",
    "st_amt=pd.DataFrame(st_amt, columns=['TRANSACTION_AMT'])\n",
    "st_amt.plot(kind='bar')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.2 各州捐款总人数可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "uuid": "5194864e-9de5-4ebf-b2f0-ddbc9ae948ce"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='STATE'>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各州捐款总人数可视化，取前10个州的数据\n",
    "st_amt = c_itcont.groupby('STATE').size().sort_values(ascending=False).head(10)\n",
    "st_amt.plot(kind='bar')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.3 热门候选人拜登在各州的获得的捐赠占比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([<AxesSubplot:ylabel='TRANSACTION_AMT'>], dtype=object)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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AcWDdwGvA2uA5oq66sBxLhHpQoVHJAI6b4PNAubx+xI0lRwddhoiSeBt4I3Ot/XAfz341IoOp6lEpFsqPCIR9diypeXANNKjQV3fT6MfO0GHxCFgC/Bul7ctQPODT63QMnGRAqTCIyJneGzZ0jGcWYQuAyYAgxxGy6QTfLjU/O7jB59acdRlMBHJPBUeEemVzknSo8/yNuYsn8vl8nkLHCN9ztSBLu/P+vGDT61oyWE2EXFMhUdEsuaxZUuHkL49Npj0mWFd3w8CSklPpu76vpT0XJkOIN7l7fTHXT/XDhx68KkVBb/7di4ZY14C6qy1v+ryuc+SHs17mPQmn5+21ja4SSiSOSo8IiIR1bndw3xr7Z93+dwa4PPA5cB/AwJrrYsT4UUyqsh1ABERceYnwBJjTBmAMaYSGAe8AtwHPAiMN8ZUOEsokiEqPCIiEWWtPQKsJX1eG8By4EdABTDWWru28/EyNwlFMkeFR0Qk2p4gXXTofP8E6YLzo87PPUl6tEekoGkOj4hIhBljhgDvAbcDT1prpxlj3iC96u7UJPBxwOXW2i2OYor0m0Z4REQizFp7gvSZX98FnjDGTAOGWGvHW2srrbWVwJfRKI8UOBUeERF5gvR5a0+QLjbPnPb1p1HhkQKnW1oiIiISehrhERERkdBT4REREZHQU+ERERGR0FPhERERkdBT4REREZHQU+ERERGR0FPhERERkdBT4REREZHQU+ERkT4zxlhjzPe7PC4xxhw0xqw47Xk/NcasyX1CEZE0FR4R6Y+TwBXGmEGdj28Fdnd9gjFmODAHGGaMuSS38URE0lR4RKS/ngeWdH58H+nzmLr6GPAc8CSwPIe5RER+R4VHRPrrSWC5MWYgMBN4/bSvnypBpw6mFBHJORUeEekXa+1bQCXpMvN8168ZY0YDU4FV1tp3gaQx5oqchxSRyFPhEZFMeBZ4lDNvZ90LjAC2G2N28PtiJCKSUyo8IpIJ3wUesdZuPO3z9wG3W2srrbWVpCcvax6PiOScCo+I9Ju1dpe19htdP2eMqQQmAWu6PG87cNwYMy+3CUUk6oy11nUGERERkazSCI+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiISeCo+IiIiEngqPiIiIhJ4Kj4iIiITe/weErJPCNMtYyQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 从所有数据中取出支持拜登的数据\n",
    "biden = c_itcont[c_itcont['CAND_NAME']=='BIDEN, JOSEPH R JR']\n",
    "# 统计各州对拜登的捐款总数\n",
    "biden_state = biden.groupby('STATE').sum().sort_values(\"TRANSACTION_AMT\", ascending=False).head(10)\n",
    "# 饼图可视化各州捐款数据占比\n",
    "biden_state.plot.pie(figsize=(10, 10),autopct='%0.2f%%',subplots=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "uuid": "22b9d5c7-51e1-4af2-a7d5-5f72949a400f"
   },
   "source": [
    "#### 4.3 总捐最多的候选人捐赠者词云图\n",
    "通过数据分析中获得捐赠总额前三的候选人统计中可以看出拜登在2020.7.22-2020.8.20这期间获得捐赠的总额是最多的，所以我们以拜登为原模型，制作词云图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2021-08-28 14:16:02--  https://img.alicdn.com/tfs/TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg\n",
      "Resolving img.alicdn.com (img.alicdn.com)... 106.15.218.254, 106.15.218.207, 240e:978:1403:0:3::3fc, ...\n",
      "Connecting to img.alicdn.com (img.alicdn.com)|106.15.218.254|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 4236 (4.1K) [image/jpeg]\n",
      "Saving to: ‘TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg’\n",
      "\n",
      "100%[======================================>] 4,236       --.-K/s   in 0s      \n",
      "\n",
      "2021-08-28 14:16:02 (179 MB/s) - ‘TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg’ saved [4236/4236]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 首先下载图片模型,这里提供的是已经处理好的图片，有兴趣的选手可以自己写代码进行图片处理\n",
    "# 处理结果：需要将人图像和背景颜色分离，并纯色填充，词云才会只显示在人图像区域\n",
    "# 拜登原图：https://img.alicdn.com/tfs/TB1pUcwmZVl614jSZKPXXaGjpXa-689-390.jpg\n",
    "# 拜登处理后图片：https://img.alicdn.com/tfs/TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg\n",
    "# 特朗普原图：https://img.alicdn.com/tfs/TB1D0l4pBBh1e4jSZFhXXcC9VXa-298-169.jpg\n",
    "# 特朗普处理后图片：https://img.alicdn.com/tfs/TB1BoowmZVl614jSZKPXXaGjpXa-298-169.jpg\n",
    "# 这里我们先下载处理后的图片\n",
    "!wget https://img.alicdn.com/tfs/TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 由于下载图片文件名过长，我们对文件名进行重命名\n",
    "import os\n",
    "os.rename('TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg', 'biden.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "uuid": "0f539f92-e1c9-4379-992b-d2bdab65003f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<wordcloud.wordcloud.WordCloud at 0x7f5188fd81d0>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 在4.2 热门候选人拜登在各州的获得的捐赠占比 中我们已经取出了所有支持拜登的人的数据，存在变量：biden中\n",
    "# 将所有捐赠者姓名连接成一个字符串\n",
    "data = ' '.join(biden[\"NAME\"].tolist())\n",
    "# 读取图片文件\n",
    "bg = plt.imread(\"biden.jpg\")\n",
    "# 生成\n",
    "wc = WordCloud(# FFFAE3\n",
    "    background_color=\"white\",  # 设置背景为白色，默认为黑色\n",
    "    width=890,  # 设置图片的宽度\n",
    "    height=600,  # 设置图片的高度\n",
    "    mask=bg,    # 画布\n",
    "    margin=10,  # 设置图片的边缘\n",
    "    max_font_size=100,  # 显示的最大的字体大小\n",
    "    random_state=20,  # 为每个单词返回一个PIL颜色\n",
    ").generate_from_text(data)\n",
    "# 图片背景\n",
    "bg_color = ImageColorGenerator(bg)\n",
    "# 开始画图\n",
    "plt.imshow(wc.recolor(color_func=bg_color))\n",
    "# 为云图去掉坐标轴\n",
    "plt.axis(\"off\")\n",
    "# 画云图，显示\n",
    "# 保存云图\n",
    "wc.to_file(\"biden_wordcloud.png\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "tianchi_metadata": {
   "competitions": [],
   "datasets": [
    {
     "id": "79412",
     "title": "2020_US_President_political_contributions"
    }
   ],
   "description": "",
   "notebookId": "123453",
   "source": "dsw"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
